package com.atguigu.spring6.iocxml.di;
// 导入必要的测试和Spring框架类
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * TestBook类用于测试通过Spring框架管理Book类的Bean实例
 * 它演示了如何使用Spring的依赖注入（DI）功能来创建和使用Book类的实例
 */
public class TestBook {

    /**
     * testSetter方法测试通过setter方法进行依赖注入
     * 它使用Spring的ApplicationContext来获取Book类的Bean实例，并打印该实例
     * 这个方法旨在验证通过setter方法注入的依赖是否正确
     */
    @Test
    public void testSetter(){
        // 加载Spring配置文件并创建ApplicationContext对象
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean-di.xml");
        // 通过ApplicationContext获取Bean id为"book"的Book类实例
        Book book=context.getBean("book",Book.class);
        // 打印Book类实例
        System.out.println(book);
    }

    /**
     * testConstructor方法测试通过构造器进行依赖注入
     * 它同样使用Spring的ApplicationContext来获取Book类的Bean实例，并打印该实例
     * 这个方法旨在验证通过构造器注入的依赖是否正确
     */
    @Test
    public void testConstructor(){
        // 加载Spring配置文件并创建ApplicationContext对象
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean-di.xml");
        // 通过ApplicationContext获取Bean id为"bookCon"的Book类实例
        Book book=context.getBean("bookCon",Book.class);
        // 打印Book类实例
        System.out.println(book);
    }
}
